define(function (require, exports) {
	var $ = require('jquery');
	var util = require('util');
	var pubjs = require('pubjs');
	var view = require('@base/view');

	var Main = view.widget.extend({
		init: function (config) {
			// var user = pubjs.getUser().current;
			var isChannelShowRight = pubjs.checkRight('sunfei.qualificationChannel');
			config = pubjs.conf(config, {
				'urlGet': 'qualification/info',
				'urlSave': 'qualification/add',
				'urlUpdate': 'qualification/update',
				'urlAudit': 'qualification/audit',
				'class': 'P-adminAptitudeEdit',
				'tplFile': '/tpl/admin/aptitude/edit.html',
				'layout': {
					'module': '@base/view.container'
				},
				'view_model': {
					// 是否为弹出层
					'isPop': false,
					// 公司名称
					'UserName': '',
					// 站点名称
					'SiteName': '',
					// 网址
					'SiteUrl': '',
					// QQ
					'QQ': '',
					// 电话
					'Phone': '',
					// 地址
					'Address': '',
					//Email
					'Email': '',
					//联系人
					'Contact': '',
					// 品牌名字
					'BrandName': '',
					// 是否有设置资质审核渠道，没有权限隐藏渠道
					'isChannelShow': isChannelShowRight || false,
					//备注
					'Remark': "",
					'IsSlave': false,
					"readonly": {
						'IsSlave': false
					},
					evSave: this.save,
					evCancel: this.cancel
				}
			});

			this.$BidExId = 10098;
			this.$IsEdit = false;
			this.$data = {};
			var c = config.get();
			c.view_model.isPop = c.layout.module.indexOf('dialog') > -1;
			this.Super('init', arguments);
		},
		afterBuild: function () {
			var self = this;

			var config = {
				// 表单取消按钮
				'cancel': {
					'value': LANG('取消'),
					'class': 'btn btn-link mr20'
				},
				'saveDraft': {
					'value': LANG('保存草稿'),
					'class': 'btn btn-default mr20'
				},
				// 表单保存按钮
				'save': {
					'value': LANG('保存'),
					'class': 'btn btn-confirm'
				},
				'QQTip': {
					width: 300,
					data: LANG('推广用的QQ账号，暂用于广点通渠道')
				},
				'AddressTip': {
					width: 300,
					data: LANG('优酷，鹰击必填')
				},
				'PhoneTip': {
					width: 300,
					data: LANG('优酷，鹰击必填')
				},
				'ContactTip': {
					width: 300,
					data: LANG('优酷，鹰击必填')
				},
				'BrandNameTip': {
					width: 300,
					data: LANG('优酷，鹰击必填')
				},
				'channels': {
					// 'defaultValue': c.channelId
					// 'data': pubjs.config('exchange').filter(function (item) {
					// 	return pubjs.config('aptitude_group').indexOf(item.id) > -1;
					// })
					// ,'key':'id'
					// ,'name':"Name"
					// , 'reqType': 'websocket'
					// , 'prefix': 'dealEditChannel'
					// , 'changeEvent': true
				},
				'industry':{
					'def': LANG('选择行业分类'),
					'url': 'category/industry',
					'reqType': 'websocket',
					'skey': 'children',
					'name': 'Name',
					'key': 'BdxId',
					'canSelectParent': false,
					// 'all': {Name: LANG('无'), BdxId: 0},
					'width': 250,
					'panel_config': {
						'height': 300
					}
				},
				'category':{
					'def': LANG('选择行业类别'),
					'option_height': 130,
					'width': 250,
					'search':false,
					'isPopUp': false,
					'url': 'category/industrySort',
					'reqType': 'websocket',
					'name': 'Name',
					'key': 'BdxId'
				},
				//'logo': pubjs.config('uploader/logo')
			};
			this.showLoading();
			self.buildFromTemplate(config);
		},
		afterBuildTemplate: function () {
			this.hideLoading();
			var self = this;
			/*			this.vm.watch('IsSlave', function(v) {
			 if(v)
			 {
			 self.$.channelItem.showSlave();
			 }
			 else
			 {
			 self.$.channelItem.showAll();
			 }
			 })*/
		},
		onInputClick: function (ev) {
			switch (ev.name) {
				case 'cancel':
					this.cancel();
					break;
				case 'save':
					this.save();
					break;
				case 'saveDraft':
					this.saveDraft();
					break;
			}
			return false;
		},
		saveDraft:function () {
			this.$saveDraft = true;
			this.save();
		},
		reset: function () {
			this.vm.reset();
			this.$param = null;
			this.$UserNameEl = $('.AptitueUserName');
			this.$UserNameEl.attr('disabled', false);
			this.$.category.reset();
			this.$.industry.reset();
			this.$.certificate.reset();
			// this.$.channelCheckbox.reset();
			// this.$.channelItem.reset();
			// this.$.channels.reset();
			// this.$UserNameEl.attr('disabled', false);
			return this;
		},
		setParam: function (param) {
			this.$param = param;
			return this;
		},
		load: function () {
			var url = this.getConfig('urlGet');
			if(this.vm.$.headTitle){
			this.vm.$.headTitle = LANG('编辑资质');
			}
			this.showLoading();
			pubjs.mc.send(url, this.$param, this.onData.bind(this));
		},
		onData: function (err, data) {
			this.hideLoading();
			if (err) {
				pubjs.alert(err.message);
				return false;
			}
			this.setData(data);
		},
		setData: function (data) {
			this.$UserNameEl = $('.AptitueUserName');
			this.$UserNameEl.attr('disabled', true);
			this.$data = data;
			data.QQ = data.QQ || '';

			this.vm.setData(data);
			// 资质证件
			var Materials = [];
			util.each(data.Materials, function (item, index) {
				if (item && !item['IsDeleted']) {
					Materials.push(item);
				}
			});
			// logo
			/*			if (data.Logo) {
			 this.$.logo.setValue({
			 thumb: data.Logo
			 });
			 }*/

			/*			if(data.IsSlave)
			 {
			 this.vm.$.IsSlave = !!data.IsSlave;
			 }*/

			//this.vm.$.readonly.IsSlave = true;
			this.$.channels.setData(data.Info);
			this.$.category.setValue(data.Category);
			this.$.industry.setValue(data.FullIndustry||[]);
			this.$.certificate.setData(Materials);
			this.$.saveDraft[data.IsDraft ? 'show':'hide']();
		},
		getData: function () {
			var arr = [
				"UserName", "SiteName", "SiteUrl", "QQ", "BrandName"
				, "Phone","Email","Address", "Contact","Remark"
			];

			var self = this;
			var vm = self.vm.$;

			var data = {};
			util.each(arr, function (item) {
				if (item) {
					data[item] = util.trim(vm[item]);
				}
			});
			data = util.extend(data, self.$param);
			// 行业分类
			data.FullIndustry = this.$.industry.getValue() || [];
			data.Industry = +data.FullIndustry[data.FullIndustry.length-1];

			// 行业类别
			data.Category = this.$.category.getValue(true).id || 0;

			// 所选渠道
			data.Info = this.$.channels.getData();
			// 资质证件
			data.Materials = this.$.certificate.getData();
			data.IsDraft = !!this.$saveDraft;
			return data;
		},
		validate: function (data) {
			var self = this;
			var vm = this.vm.$;
			data = data || self.getData();

			if (util.trim(data.UserName) === '') {
				pubjs.alert(LANG('请先填写广告主名称'));
				return false;
			}

			if (util.trim(data.SiteName) === '') {
				pubjs.alert(LANG('请先填写网站名称'));
				return false;
			}

			//新建时判断，名称新建后不可更改
			// if (!this.$param && !/(公司\s*$|医院\s*$|ltd\s*$)/i.test(data.UserName) && !(data.Materials.length==1 && data.Materials[0].Path==='')){
			// 	pubjs.alert(LANG('公司名称必须与营业执照的公司名称一致'));
			// 	return false;
			// }

			if (data.SiteUrl === '' || !/^(http|https):\/\//i.test(data.SiteUrl)) {
				pubjs.alert(LANG('网址填写，必须以http://或者https://开头'));
				return false;
			}

			if(data.Contact === ''){
				pubjs.alert(LANG('请填写联系人'));
				return false;
			}

			if(data.Phone === ''){
				pubjs.alert(LANG('请填写电话'));
				return false;
			}

			if(data.Address === ''){
				pubjs.alert(LANG('请填写地址'));
				return false;
			}

			if(data.Email === ''){
				pubjs.alert(LANG('请填写E-mail'));
				return false;
			}
			else{
				if(!util.isEmail(data.Email)){
					pubjs.alert(LANG('请正确填写E-mail'));
					return false;
				}
			}

			if(data.BrandName === ''){
				pubjs.alert(LANG('请填写品牌名称'));
				return false;
			}


			if(!data.FullIndustry.length){
				pubjs.alert(LANG('请选择行业分类'));
				return false;
			}

			if(!data.Category){
				pubjs.alert(LANG('请选择行业类别'));
				return false;
			}

			// if (data.QQ) {
			// 	if (!util.isNumber(data.QQ)) {
			// 		pubjs.alert(LANG('QQ必须是数字'));
			// 		return false;
			// 	}
			// }

			// var youku_channel = [10008, 10060];
			// var has_youku;
			// var info = data.Info;
			// util.each(info, function (item) {
			// 	if (~youku_channel.indexOf(+item.ExchangeId)) {
			// 		has_youku = true;
			// 		return false;
			// 	}
			// });

			// if (has_youku) {
			// 	if (!data.Phone || !data.Contact || !data.Address || !data.BrandName) {
			// 		pubjs.alert(LANG('优酷、鹰击渠道，必须填写电话、品牌名称、联系人、地址的信息'));
			// 		return false;
			// 	}
			// }

			// if (data.Phone && (!util.isNumber(data.Phone) || data.Phone.length >= 20)) {
			// 	pubjs.alert(LANG('电话号码必须是数字且20个以内'));
			// 	return false;
			// }

			// 暂时去掉了广点通的qq、品牌名称、logo的验证

			// //选择了广点通，必填qq，品牌名称，logo
			// var info = data.Info;
			// var IsGdt = false;
			// util.each(info, function(item, index){
			// 	if(+item.ExchangeId === 10049){
			// 		IsGdt = true;
			// 	}
			// })
			// if(IsGdt){
			// 	if(!data.Logo || !data.BrandName || !data.QQ){
			// 		pubjs.alert(LANG('广点通渠道，必须填写QQ，品牌名称和上传Logo'));
			// 		return false;
			// 	}
			// }
			//&& this.$.certificate.validateExtra(data)
			var state = this.$.certificate.validate(data.Materials);

			// 检查补充证件信息, 查看是否有勾选需要必填补充信息的渠道 state &&
			return state ;
		},
		save: function () {
			// 检查渠道数据是否完整返回,未完整返回，不允许保存，避免数据丢失
			// if (!this.$industryStatus) {
			// 	pubjs.alert(LANG('请稍后保存，渠道行业分类数据还没完整返回'));
			// 	return false;
			// }

			var data = this.getData();
			var url;
			if (this.$param) {
				data = util.extend(data, this.$param);
				url = this.getConfig('urlUpdate');
			}
			else {
				url = this.getConfig('urlSave');
			}
			if (this.validate(data)) {
				this.showLoading();
				pubjs.mc.send(url, util.extend(data, this.$param), this.afterSave.bind(this));
			}
		},
		afterSave: function (err, data) {
			this.hideLoading();
			if (err) {
				pubjs.alert(err.message);
				return false;
			}
			if (this.$param) {
				pubjs.alert(LANG('修改成功'));
			}
			else {
				pubjs.alert(LANG('添加成功'));
			}
			this.cancel();
			this.fire('aptitudeSaveSuccess');
		},
		cancel: function () {
			pubjs.controller.navigate(-1);
			return false;
		},
		//重新请求审核
		onAuditChannel: function (data) {
			var self = this;
			if (!self.$param._id) {
				pubjs.alert(LANG('操作失败，没有资质id'));
				return false;
			}

			var map = pubjs.config('channelMap');
			var url = this.getConfig('urlAudit');
			pubjs.confirm(LANG('确定需要审核渠道：' + map[+data.param]), function (res) {
				if (res) {
					pubjs.mc.send(
						url,
						{
							'_id': +self.$param._id,
							'ExchangeIds': [+data.param]
						},
						self.afterAudit.bind(self)
					);
				}
			});

			return false;
		},
		afterAudit: function (err, data) {
			if (err) {
				pubjs.alert(err.message);
				return false;
			}
			pubjs.alert(LANG('提交重新审核操作成功'));
		},
		onCheckboxChange: function (ev) {
			if(ev.name == 'channelCheckbox'){
				 this.cast('changeAdx',this.$.channelCheckbox.getData());
			}
		},
		onLoadIndustry: function () {
			this.$industryStatus = true;
		}
	});
	exports.main = Main;

	// 弹出层
	exports.popwin = Main.extend({
		init: function (config) {
			config = pubjs.conf(config, {
				layout: {
					module: '@base/dialog.base',
					title: "关联员工"
				},

			});
		},
		afterBuild: function(){

		},
	});
});